/*
 * Copyright 2014-2016 CyberVision, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef TRANSPORTEXCEPTION_HPP_
#define TRANSPORTEXCEPTION_HPP_

#include "kaa/common/exception/KaaException.hpp"
#include <boost/system/error_code.hpp>

namespace kaa {

class TransportException : public KaaException {
public:

    TransportException() { }

    TransportException(const boost::system::error_code& errorCode) :
            KaaException(boost::format("Transport exception occurred: %1%") % errorCode.message())
            , errorCode_(errorCode) {}

    TransportException(boost::format f) : KaaException(f) { }

    TransportException(const std::string &message) : KaaException(message) { }

    boost::system::error_code getErrorCode() const { return errorCode_; }

private:
    boost::system::error_code errorCode_;

};

}


#endif /* TRANSPORTEXCEPTION_HPP_ */
